package work.jame.blog.service;

import work.jame.blog.framework.result.PageResult;
import work.jame.blog.pojo.Comment;
import com.baomidou.mybatisplus.extension.service.IService;
import work.jame.blog.pojo.dto.CommentDTO;
import work.jame.blog.pojo.vo.SonCommentVO;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author Jame
 * @since 2023-05-18
 */
public interface CommentService extends IService<Comment> {

    /**
     * 发送评论
     * @param commentDTO 评论封装类
     * @return 是否发送成功
     */
    boolean sendComment(CommentDTO commentDTO);


    /**
     * 删除评论
     * @param commentId 评论id
     * @return 是否删除成功
     */
    boolean deleteComment(Long commentId);


    /**
     * 根据父级评论id删除所有子级评论
     * @param parentCommentId 父级评论id
     * @return 是否删除成功
     */
    boolean deleteCommentByParentCommentId(Long parentCommentId);


    /**
     * 查询文章评论
     * @param articleId 文章id
     * @param orderType  排序规则 true 根据热度  false根据时间
     * @param pageNumber  页数
     * @param pageSize  页大小
     * @return 查询结果
     */
    PageResult<?> queryCommentByArticleId(Long articleId,
                                          Long pageNumber,
                                          Long pageSize,
                                          Boolean orderType);


    /**
     * 查询子级评论
     * @param parentCommentId 父级评论id
     * @param pageNumber 页数
     * @return 返回4条子级评论
     */
    List<SonCommentVO> querySonCommentLimit4(Long parentCommentId,
                                             Long pageNumber);

    /**
     * 根据文章id查询文章根级评论数量
     * @param articleId 文章id
     * @return 评论数量
     */
    Long queryArticleRootCommentCount(Long articleId);

}
